package cn.tedu.file;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

/**本类用于测试文件类File*/
public class TestFile {
    public static void main(String[] args) throws IOException {
        /**1.ready目录与1.txt文本文档需要自己手动创建
         * 2.File需要导包:import java.io.File;
         * 3.路径是String类型，必须写正确不然找不到文件
         * 4.完整的文件名包含两部分：文件名+后缀名*/


        File file = new File("C:\\kaifa\\ready\\1.txt");
        System.out.println(file.length());//3,获取文件的字节量
        System.out.println(file.exists());//true,判断当前文件夹是否存在
        System.out.println(file.isFile());//true,判断当前文件是否为文件
        System.out.println(file.isDirectory());//false,判断当前对象是否为文件夹
        System.out.println(file.getName());//1.txt获取文件名
        System.out.println(file.getParent());//C:\kaifa\ready 获取父级路径
        System.out.println(file.getAbsoluteFile());//c:\kaifa\ready\1.txt 获取带盘符的完整路径：绝对路径

        /**new关键字只会帮你在内存中创建一个File类型的Java对象
         * 并不会帮你在磁盘中对应目录下创建一个真实存在的文件*/
        File file2 = new File("C:\\kaifa\\ready\\2.txt");

        /**由于担心我们file2对象保存路径有问题，所以IO强制要求我们必须处理这个异常，我们在此处暂时选择了抛出
         * 但注意:实际操作中不能将异常直接抛给main()
         * 这个IO异常是目前我们遇到的强制要求必须预先处理的异常
         * 如果不处理，方法的调用会报错，通不过编译*/
        System.out.println(file2.createNewFile());//创建之前不存在的文件

        File file3 = new File("C:\\kaifa\\ready\\x");
        System.out.println(file3.mkdir());//创建不存在的单层文件夹

        File file4 = new File("C:\\kaifa\\ready\\a\\b\\c");
        System.out.println(file4.mkdirs());//创建不存在的多层文件夹

        /**delete()只能用来删除文件与空文件夹*/
        System.out.println(file2.delete());
        System.out.println(file3.delete());
        System.out.println(file4.delete());

        file = new File("C:\\kaifa\\ready");

        String[] list = file.list();
        System.out.println(Arrays.toString(list));

        File[] fs = file.listFiles();/**常用  ,遍历文件，查看文件成员*/
        System.out.println(Arrays.toString(fs));
        System.out.println(fs[0].length());

        File[] fs2 = file.listFiles();
        for (int i = 0; i < fs2.length ; i++) {
            System.out.println(fs2[i]);
            System.out.println(fs2[i].isFile());
        }
    }
}
